﻿using UnityEngine;
using System.Collections;
using System.Collections.Generic;

/// <summary>
/// 실제 스테이지 데이터들. 하드코딩되어있다.
/// </summary>
public class StageInfos
{
	public static StageInfo	testStage;
	public static StageInfo	testStage2;


	public static StageInfo stage1;
	public static StageInfo stage2;
	public static StageInfo stage3;
	public static StageInfo stage4;
	public static StageInfo stage5;
	public static StageInfo stage6;

	public static StageInfo	epilogue;


	static Dictionary<StageInfo, StageInfo> s_nextStage;



	/// <summary>
	/// 다음 스테이지 구하기
	/// </summary>
	/// <returns>The next stage.</returns>
	/// <param name="info">Info.</param>
	public static StageInfo GetNextStage(StageInfo info)
	{
		return s_nextStage[info];
	}

	static StageInfos()
	{
		StageInfo tempStage;
		WorldInfo tempWorld;


		// Stage 1

		tempStage			= new StageInfo();
		tempWorld			= new WorldInfo();
		tempStage.worldInfo	= tempWorld;

		tempStage.stageName	= "Experiment #1";

		tempWorld.AddMapChunkPath("Common/plain");
		tempWorld.AddMapChunkPath("Common/plain_1hole");
		tempWorld.AddMapChunkPath("Common/teleport_to_goal");
		tempWorld.AddMapChunkPath("Common/empty");
		tempWorld.AddMapChunkPath("Common/goal");

		tempWorld.AddCharInfo(0, "Enemy/Enemy1", 60, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-1", 40, 8, 1);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-1", 30, 8, 2);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 60, 8, 1);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-chaser", 50, 8, 3);

		tempWorld.AddCharInfo(1, "Enemy/Enemy1", 30, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-chaser", 40, 8, 2);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-shooter", 60, 8, 1);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1", 70, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3", 40, 48);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3", 50, 20, 1);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3-1", 48, 22, 2);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3-1", 52, 24, 2);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3-1", 50, 28, 3);

		tempWorld.AddCharInfo(1, "FieldItem/CodexPoint", 40, 8);

		tempWorld.AddCharInfo(2, "Enemy/Enemy1", 40, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1", 60, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 45, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 70, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 80, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 70, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy4", 70, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-chaser", 30, 8, 3);

		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 30, 8, 1);
		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 60, 8, 2);

		tempWorld.AddCharInfo(0, "Player/Player_Santa", 12, 8);

		tempWorld.worldEventReceiverPath	= "DefaultWorldEventReceiver";
		tempWorld.worldBgm					= SoundInfos.GetBgm("field");

		stage1				= tempStage;


		// Stage 2
		
		tempStage			= new StageInfo();
		tempWorld			= new WorldInfo();
		tempStage.worldInfo	= tempWorld;
		
		tempStage.stageName	= "Experiment #2";

		tempWorld.AddMapChunkPath("Common/plain_1hole");
		tempWorld.AddMapChunkPath("Common/plain_2hole");
		tempWorld.AddMapChunkPath("Common/plain");
		tempWorld.AddMapChunkPath("Common/teleport_to_goal");
		tempWorld.AddMapChunkPath("Common/empty");
		tempWorld.AddMapChunkPath("Common/goal");

		tempWorld.AddCharInfo(0, "Enemy/Trap", 75, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1", 80, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 70, 8, 1);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 65, 8, 2);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 75, 8, 2);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 60, 8, 3);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-chaser", 55, 8, 1);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-chaser", 60, 8, 2);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-chaser", 50, 8, 3);

		tempWorld.AddCharInfo(0, "FieldItem/CodexPoint", 75, 16, 2);
		
		tempWorld.AddCharInfo(1, "Enemy/Enemy1", 30, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1", 75, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3", 40, 48);
		tempWorld.AddCharInfo(1, "Enemy/Trap", 45, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3", 55, 20, 1);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3-1", 55, 28, 2);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-shooter", 55, 8, 3);

		tempWorld.AddCharInfo(1, "FieldItem/CodexPoint", 55, 8, 1);
		
		tempWorld.AddCharInfo(2, "Enemy/Enemy1", 40, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 42, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 44, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 46, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 48, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 50, 8, 3);
		tempWorld.AddCharInfo(2, "Enemy/Trap", 30, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Trap", 60, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 60, 8, 3);
		tempWorld.AddCharInfo(2, "Enemy/Enemy4", 60, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy3", 50, 48);
		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 55, 8);

		tempWorld.AddCharInfo(3, "Enemy/Enemy1", 30, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-1", 60, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1", 50, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy3", 80, 40);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-chaser", 50, 8, 1);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-chaser", 51, 8, 2);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-chaser", 52, 8, 3);
		tempWorld.AddCharInfo(3, "Enemy/Enemy4-1", 55, 8, 2);
		
		tempWorld.AddCharInfo(0, "Player/Player_Santa", 12, 8);
		
		tempWorld.worldEventReceiverPath	= "DefaultWorldEventReceiver";
		tempWorld.worldBgm					= SoundInfos.GetBgm("field");
		
		stage2				= tempStage;



		// Stage 3
		
		tempStage			= new StageInfo();
		tempWorld			= new WorldInfo();
		tempStage.worldInfo	= tempWorld;
		
		tempStage.stageName	= "Experiment #3";

		tempWorld.AddMapChunkPath("Common/plain");
		tempWorld.AddMapChunkPath("Stage3/2level-part1");
		tempWorld.AddMapChunkPath("Stage3/2level-part2");
		tempWorld.AddMapChunkPath("Stage3/2level-part3");
		tempWorld.AddMapChunkPath("Common/teleport_to_goal");
		tempWorld.AddMapChunkPath("Common/empty");
		tempWorld.AddMapChunkPath("Common/goal");

		tempWorld.AddCharInfo(0, "Enemy/Enemy1", 40, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1", 60, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1", 80, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy3", 60, 20, 1);
		tempWorld.AddCharInfo(0, "Enemy/Enemy3-1", 60, 30, 1);
		tempWorld.AddCharInfo(0, "Enemy/Enemy3-1", 35, 20, 2);
		tempWorld.AddCharInfo(0, "Enemy/Enemy3-1", 40, 24, 3);
		tempWorld.AddCharInfo(0, "Enemy/Enemy3-1", 40, 20, 3);
		
		tempWorld.AddCharInfo(1, "Enemy/Enemy1", 30, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1", 70, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1", 70, 32);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-chaser", 40, 24);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3", 40, 48);
		
		tempWorld.AddCharInfo(2, "Enemy/Enemy1", 40, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 60, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1", 50, 32);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 20, 32);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 70, 32);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1", 70, 8);
		tempWorld.AddCharInfo(2, "Enemy/Trap", 30, 48);
		tempWorld.AddCharInfo(2, "Enemy/Trap", 70, 48);

		tempWorld.AddCharInfo(2, "Enemy/Enemy1-shooter-p", 30, 48, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-shooter-p", 70, 48, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-shooter", 30, 32, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-shooter", 50, 32, 3);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-shooter", 70, 32, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy4", 50, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy4-1", 50, 8, 3);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 30, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 55, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 70, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-chaser", 40, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-chaser", 50, 8, 3);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-chaser", 60, 8, 3);

		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 35, 48, 1);
		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 75, 48);
		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 50, 8);
		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 30, 16, 1);
		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 70, 16, 2);
		
		tempWorld.AddCharInfo(3, "Enemy/Enemy1", 30, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-1", 40, 24);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1", 50, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy3", 60, 20);

		tempWorld.AddCharInfo(4, "Enemy/Enemy1", 30, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-1", 60, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-1", 60, 8, 2);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter", 20, 8, 1);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter", 22, 8, 2);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter", 24, 8, 3);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter", 21, 8, 3);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter", 23, 8, 2);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-chaser", 20, 8, 3);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-chaser", 20, 8, 4);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1", 50, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy3-1", 40, 32, 1);
		tempWorld.AddCharInfo(4, "Enemy/Enemy4-1", 50, 8, 2);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-chaser", 70, 40);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-chaser", 60, 40, 1);
		
		tempWorld.AddCharInfo(0, "Player/Player_Santa", 12, 8);
		
		tempWorld.worldEventReceiverPath	= "DefaultWorldEventReceiver";
		tempWorld.worldBgm					= SoundInfos.GetBgm("field");
		
		stage3				= tempStage;



		// Stage 4
		
		tempStage			= new StageInfo();
		tempWorld			= new WorldInfo();
		tempStage.worldInfo	= tempWorld;
		
		tempStage.stageName	= "Experiment #4";

		tempWorld.AddMapChunkPath("Common/goal");
		tempWorld.AddMapChunkPath("Common/empty");
		tempWorld.AddMapChunkPath("Stage4/teleport_to_goal_rev");
		tempWorld.AddMapChunkPath("Common/3level-platforms");
		tempWorld.AddMapChunkPath("Common/plain_3hole");
		tempWorld.AddMapChunkPath("Common/plain_2hole");
		tempWorld.AddMapChunkPath("Common/plain");


		tempWorld.AddCharInfo(6, "Enemy/Enemy1", 60, 8);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1", 80, 8);
		
		tempWorld.AddCharInfo(5, "Enemy/Enemy1", 10, 8);
		//tempWorld.AddCharInfo(5, "Enemy/Enemy1", 50, 8);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-chaser", 20, 8);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-shooter", 20, 8, 2);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3", 40, 52);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3", 40, 24, 1);
		tempWorld.AddCharInfo(5, "Enemy/Trap", 30, 8, 1);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-shooter", 50, 8, 1);

		tempWorld.AddCharInfo(5, "FieldItem/CodexPoint", 45, 8, 1);
		tempWorld.AddCharInfo(5, "FieldItem/CodexPoint", 25, 8, 2);

		tempWorld.AddCharInfo(4, "Enemy/Enemy4", 80, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1", 60, 8);
		//tempWorld.AddCharInfo(4, "Enemy/Enemy1-1", 50, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-1", 30, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy3", 20, 40, 2);
		tempWorld.AddCharInfo(4, "Enemy/Enemy3", 60, 44);
		tempWorld.AddCharInfo(4, "Enemy/Trap", 26, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-1", 30, 8, 1);
		//tempWorld.AddCharInfo(4, "Enemy/Enemy1-1", 15, 8, 1);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-1", 15, 8, 1);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter", 30, 8, 2);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter", 50, 8, 2);

		tempWorld.AddCharInfo(4, "FieldItem/CodexPoint", 26, 16, 2);

		//tempWorld.AddCharInfo(3, "Enemy/Enemy4", 30, 24);
		tempWorld.AddCharInfo(3, "Enemy/Enemy4", 60, 24, 1);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter-p", 30, 24, 1);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter-p", 60, 24, 2);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-chaser", 40, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-chaser", 20, 8, 2);
		//tempWorld.AddCharInfo(3, "Enemy/Enemy1-chaser", 20, 8, 2);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-chaser", 20, 8, 3);
		//tempWorld.AddCharInfo(3, "Enemy/Enemy1-chaser", 20, 8, 3);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1", 20, 8);
		//tempWorld.AddCharInfo(3, "Enemy/Enemy1", 70, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy3", 40, 24);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-1-p", 40, 40);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter-p", 40, 50, 1);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter-p", 40, 40, 2);
		tempWorld.AddCharInfo(3, "Enemy/Trap", 40, 40);

		tempWorld.AddCharInfo(3, "FieldItem/CodexPoint", 25, 24, 1);
		tempWorld.AddCharInfo(3, "FieldItem/CodexPoint", 65, 24, 2);
		tempWorld.AddCharInfo(3, "FieldItem/CodexPoint", 50, 40);

		//tempWorld.AddCharInfo(2, "Enemy/Enemy4", 20, 8, 1);
		//tempWorld.AddCharInfo(2, "Enemy/Enemy4", 40, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy4-1", 50, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy4", 60, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy3", 40, 40);
		tempWorld.AddCharInfo(2, "Enemy/Enemy3", 70, 40, 3);

		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 50, 16);
		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 40, 8, 2);
		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 30, 16, 1);

		tempWorld.AddCharInfo(6, "Player/Player_Santa", 12, 8);
		
		tempWorld.worldEventReceiverPath	= "DefaultWorldEventReceiver";
		tempWorld.worldBgm					= SoundInfos.GetBgm("field");
		
		stage4				= tempStage;


		// Stage 5
		
		tempStage			= new StageInfo();
		tempWorld			= new WorldInfo();
		tempStage.worldInfo	= tempWorld;
		
		tempStage.stageName	= "Experiment #5";
		
		tempWorld.AddMapChunkPath("Common/plain");
		tempWorld.AddMapChunkPath("Stage5/hill1");
		tempWorld.AddMapChunkPath("Stage5/hill2");
		tempWorld.AddMapChunkPath("Stage5/bunker");
		tempWorld.AddMapChunkPath("Stage5/plain_clockhandcheck");
		tempWorld.AddMapChunkPath("Common/teleport_to_goal");
		tempWorld.AddMapChunkPath("Common/empty");
		tempWorld.AddMapChunkPath("Common/goal");
		
		tempWorld.AddCharInfo(0, "Enemy/Enemy1", 40, 8);
		//tempWorld.AddCharInfo(0, "Enemy/Enemy1-1", 60, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1", 80, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 70, 8, 1);
		//tempWorld.AddCharInfo(0, "Enemy/Enemy1-chaser", 65, 8, 1);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-chaser", 67, 8, 2);
		tempWorld.AddCharInfo(0, "Enemy/Enemy3", 50, 36);
		
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-1", 20, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1", 40, 32);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-chaser", 70, 60);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-shooter-p", 70, 60, 1);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-chaser", 70, 60, 2);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3", 40, 48);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-shooter-p", 20, 32, 1);
		//tempWorld.AddCharInfo(1, "Enemy/Enemy1-shooter-p", 20, 32, 2);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-shooter-p", 30, 32, 3);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3-1", 20, 32, 2);

		tempWorld.AddCharInfo(1, "FieldItem/CodexPoint", 20, 32);
		tempWorld.AddCharInfo(1, "FieldItem/CodexPoint", 70, 48, 2);
		
		tempWorld.AddCharInfo(2, "Enemy/Enemy1", 20, 60);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 60, 8);
		//tempWorld.AddCharInfo(2, "Enemy/Enemy1", 40, 32);
		//tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 10, 60);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-chaser", 70, 24);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-chaser", 20, 60, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-shooter", 20, 60, 1);
		//tempWorld.AddCharInfo(2, "Enemy/Enemy1", 70, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy3", 70, 32);
		tempWorld.AddCharInfo(2, "Enemy/Enemy3", 65, 34, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy3-1", 65, 24, 3);

		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 10, 56, 1);
		tempWorld.AddCharInfo(2, "FieldItem/CodexPoint", 40, 48, 2);
		
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter", 30, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter-p", 25, 8, 2);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter-p", 27, 8, 3);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter", 60, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter-p", 65, 8, 1);

		tempWorld.AddCharInfo(3, "FieldItem/CodexPoint", 35, 16);
		tempWorld.AddCharInfo(3, "FieldItem/CodexPoint", 60, 16, 2);
		
		tempWorld.AddCharInfo(4, "Enemy/Enemy1", 30, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-1", 60, 8);
		//tempWorld.AddCharInfo(4, "Enemy/Enemy1", 50, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy4", 50, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-chaser", 70, 8);
		tempWorld.AddCharInfo(4, "Enemy/Enemy3-1", 40, 24);

		tempWorld.AddCharInfo(5, "Enemy/TheClockhand", 70, 8);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3-1", 30, 36);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3-1", 50, 16);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3-1", 50, 16, 1);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3-1", 50, 16, 2);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3-1", 50, 16, 3);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3-1", 50, 16, 2);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3-1", 50, 16, 3);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3-1", 40, 30);

		tempWorld.AddCharInfo(5, "FieldItem/CodexPoint", 50, 16, 2);
		
		tempWorld.AddCharInfo(0, "Player/Player_Santa", 12, 8);
		
		tempWorld.worldEventReceiverPath	= "DefaultWorldEventReceiver";
		tempWorld.worldBgm					= SoundInfos.GetBgm("field");
		
		stage5				= tempStage;



		// Stage 6
		
		tempStage			= new StageInfo();
		tempWorld			= new WorldInfo();
		tempStage.worldInfo	= tempWorld;
		
		tempStage.stageName	= "Experiment FINAL";

		tempWorld.AddMapChunkPath("Stage5/bunker");
		tempWorld.AddMapChunkPath("Common/plain");
		tempWorld.AddMapChunkPath("Common/plain_1hole");
		tempWorld.AddMapChunkPath("Common/plain");				// 시작
		tempWorld.AddMapChunkPath("Stage6/complex1");
		tempWorld.AddMapChunkPath("Stage6/complex2");
		tempWorld.AddMapChunkPath("Stage6/complex3");
		tempWorld.AddMapChunkPath("Common/teleport_to_goal");
		tempWorld.AddMapChunkPath("Common/empty");
		tempWorld.AddMapChunkPath("Stage6/goal_final");

		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter-p", 25, 8);
		//tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 30, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter-p", 60, 8);
		//tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 65, 8);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-chaser", 65, 8, 2);
		//tempWorld.AddCharInfo(0, "Enemy/Enemy3-1", 50, 24);
		tempWorld.AddCharInfo(0, "Enemy/Enemy3-1", 30, 24, 1);
		tempWorld.AddCharInfo(0, "Enemy/Enemy3-1", 40, 20, 2);
		//tempWorld.AddCharInfo(0, "Enemy/Enemy3-1", 50, 20, 3);
		tempWorld.AddCharInfo(0, "Enemy/Enemy3-1", 45, 20, 3);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 10, 8, 2);
		tempWorld.AddCharInfo(0, "Enemy/Enemy1-shooter", 10, 8, 3);

		tempWorld.AddCharInfo(0, "FieldItem/CodexPoint", 5, 16);
		tempWorld.AddCharInfo(0, "FieldItem/CodexPoint", 5, 8);
		tempWorld.AddCharInfo(0, "FieldItem/CodexPoint", 12, 16);
		tempWorld.AddCharInfo(0, "FieldItem/CodexPoint", 12, 8);
		tempWorld.AddCharInfo(0, "FieldItem/CodexPoint", 5, 24, 2);
		tempWorld.AddCharInfo(0, "FieldItem/CodexPoint", 12, 24, 1);

		tempWorld.AddCharInfo(1, "Enemy/Enemy1-1", 20, 8);
		//tempWorld.AddCharInfo(1, "Enemy/Enemy1-1", 40, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-1", 60, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-1", 20, 8, 1);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-1", 40, 8, 2);
		//tempWorld.AddCharInfo(1, "Enemy/Enemy1-1", 60, 8, 2);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3-1", 40, 18);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3-1", 40, 24);
		tempWorld.AddCharInfo(1, "Enemy/Enemy3-1", 40, 30);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-chaser", 30, 8);
		//tempWorld.AddCharInfo(1, "Enemy/Enemy1-chaser", 30, 8, 1);
		//tempWorld.AddCharInfo(1, "Enemy/Enemy1-shooter", 10, 8);
		tempWorld.AddCharInfo(1, "Enemy/Enemy1-shooter", 25, 8, 1);
		//tempWorld.AddCharInfo(1, "Enemy/Trap", 20, 8);
		tempWorld.AddCharInfo(1, "Enemy/Trap", 60, 8);
		tempWorld.AddCharInfo(1, "Enemy/Trap", 40, 28, 2);

		tempWorld.AddCharInfo(2, "Enemy/Enemy1", 20, 8);
		//tempWorld.AddCharInfo(2, "Enemy/Enemy1", 40, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1", 60, 8);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 20, 8, 1);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 40, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 60, 8, 3);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-chaser", 20, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy1-shooter", 20, 8, 1);
		//tempWorld.AddCharInfo(2, "Enemy/Enemy4-1", 10, 8, 2);
		tempWorld.AddCharInfo(2, "Enemy/Enemy3-1", 30, 24);
		//tempWorld.AddCharInfo(2, "Enemy/Enemy1-1", 30, 8);

		tempWorld.AddCharInfo(3, "Enemy/Enemy1", 40, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-chaser", 60, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-1", 80, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy1-shooter", 70, 8);
		tempWorld.AddCharInfo(3, "Enemy/Enemy3", 30, 36);
		//tempWorld.AddCharInfo(3, "Enemy/Enemy3", 50, 30);

		tempWorld.AddCharInfo(4, "Enemy/Trap", 20, 8);
		tempWorld.AddCharInfo(4, "Enemy/Trap", 20, 40);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter-p", 15, 40);
		//tempWorld.AddCharInfo(4, "Enemy/Enemy1-1-p", 25, 40);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-chaser", 84, 24);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter-p", 65, 24);
		tempWorld.AddCharInfo(4, "Enemy/Enemy3-1", 50, 30);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1", 25, 24);
		//tempWorld.AddCharInfo(4, "Enemy/Enemy1", 30, 24);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter", 25, 24, 1);
		tempWorld.AddCharInfo(4, "Enemy/Enemy1-shooter", 30, 24, 2);
		tempWorld.AddCharInfo(4, "Enemy/Enemy3-1", 50, 32, 1);
		tempWorld.AddCharInfo(4, "Enemy/Enemy3-1", 30, 24, 2);

		tempWorld.AddCharInfo(4, "FieldItem/CodexPoint", 10, 40, 1);
		tempWorld.AddCharInfo(4, "FieldItem/CodexPoint", 28, 8);
		tempWorld.AddCharInfo(4, "FieldItem/CodexPoint", 68, 24, 2);

		tempWorld.AddCharInfo(5, "Enemy/Enemy1-p", 20, 8);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-1-p", 40, 8);
		//tempWorld.AddCharInfo(5, "Enemy/Enemy1-p", 50, 8);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-shooter-p", 30, 24);
		//tempWorld.AddCharInfo(5, "Enemy/Enemy1-p", 30, 40);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-1-p", 50, 40);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-shooter-p", 50, 56);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-shooter-p", 80, 56);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-shooter-p", 88, 40);
		tempWorld.AddCharInfo(5, "Enemy/Enemy1-shooter-p", 64, 24);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3", 50, 56);
		tempWorld.AddCharInfo(5, "Enemy/Enemy3-1", 40, 48, 1);

		tempWorld.AddCharInfo(5, "FieldItem/CodexPoint", 10, 65, 1);
		tempWorld.AddCharInfo(5, "FieldItem/CodexPoint", 75, 56, 3);
		tempWorld.AddCharInfo(5, "FieldItem/CodexPoint", 80, 40, 3);
		tempWorld.AddCharInfo(5, "FieldItem/CodexPoint", 85, 24, 2);

		tempWorld.AddCharInfo(6, "Enemy/Enemy1-chaser", 60, 8);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-1", 30, 8);
		//tempWorld.AddCharInfo(6, "Enemy/Enemy1", 40, 8);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1", 70, 8);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-shooter", 70, 8);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-1", 30, 8, 2);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1", 40, 8, 2);
		//tempWorld.AddCharInfo(6, "Enemy/Enemy1", 40, 8, 2);
		//tempWorld.AddCharInfo(6, "Enemy/Enemy1", 40, 8, 2);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1", 40, 8, 1);
		//tempWorld.AddCharInfo(6, "Enemy/Enemy1", 70, 8, 1);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-1", 40, 8, 2);
		//tempWorld.AddCharInfo(6, "Enemy/Enemy1-1", 45, 8, 2);
		//tempWorld.AddCharInfo(6, "Enemy/Enemy1-1", 40, 8, 2);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-1", 45, 8, 2);
		//tempWorld.AddCharInfo(6, "Enemy/Enemy1-shooter", 70, 8, 2);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-shooter", 65, 8, 3);
		tempWorld.AddCharInfo(6, "Enemy/Enemy4-1", 50, 8, 2);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-1-p", 30, 24);
		//tempWorld.AddCharInfo(6, "Enemy/Enemy1-p", 40, 24);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-p", 70, 24);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-1-p", 20, 48);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-p", 50, 48);
		//tempWorld.AddCharInfo(6, "Enemy/Enemy1-1-p", 80, 48);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-chaser", 80, 48);
		tempWorld.AddCharInfo(6, "Enemy/Enemy1-shooter-p", 50, 40);
		tempWorld.AddCharInfo(6, "Enemy/Enemy3", 40, 48, 1);
		tempWorld.AddCharInfo(6, "Enemy/Enemy3-1", 40, 36, 2);
		tempWorld.AddCharInfo(6, "Enemy/Enemy3-1", 25, 20, 3);

		//tempWorld.AddCharInfo(7, "Enemy/Trap", 20, 8);
		tempWorld.AddCharInfo(7, "Enemy/Trap", 45, 8);
		tempWorld.AddCharInfo(7, "Enemy/Trap", 70, 8, 2);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1", 15, 8);
		//tempWorld.AddCharInfo(7, "Enemy/Enemy1", 25, 8);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1", 35, 8);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1-1", 45, 8);
		//tempWorld.AddCharInfo(7, "Enemy/Enemy1-1", 55, 8);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1-1", 65, 8);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1-chaser", 50, 8);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1-chaser", 60, 8, 1);
		//tempWorld.AddCharInfo(7, "Enemy/Enemy4-1", 65, 8, 3);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1-chaser", 75, 8);
		tempWorld.AddCharInfo(6, "Enemy/Enemy3-1", 40, 36, 1);
		tempWorld.AddCharInfo(6, "Enemy/Enemy3-1", 30, 20, 3);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1-chaser", 62, 8, 2);
		//tempWorld.AddCharInfo(7, "Enemy/Enemy1-chaser", 64, 8, 3);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1-chaser", 66, 8, 3);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1-shooter", 40, 8, 1);
		tempWorld.AddCharInfo(7, "Enemy/Enemy1-shooter", 50, 8, 2);
		//tempWorld.AddCharInfo(7, "Enemy/Enemy1-shooter", 60, 8, 3);

		tempWorld.AddCharInfo(9, "Enemy/TheClockhand", 20, 8);
		
		tempWorld.AddCharInfo(3, "Player/Player_Santa", 12, 8);
		
		tempWorld.worldEventReceiverPath	= "DefaultWorldEventReceiver";
		tempWorld.worldBgm					= SoundInfos.GetBgm("clockhand");
		
		stage6				= tempStage;


		
		// Epilogue Stage
		
		tempStage			= new StageInfo();
		tempWorld			= new WorldInfo();
		tempStage.worldInfo	= tempWorld;
		
		tempStage.stageName	= "Epilogue?";
		//tempStage.iconPath	= "
		tempStage.camFollowingMode	= GameCamera.FollowingMode.Character;
		
		tempWorld.AddMapChunkPath("Epilogue/forest_normal");
		tempWorld.AddMapChunkPath("Epilogue/forest_normal");
		tempWorld.AddMapChunkPath("Epilogue/forest_normal");
		tempWorld.AddMapChunkPath("Epilogue/forest_normal");
		tempWorld.AddMapChunkPath("Epilogue/forest_house");
		tempWorld.AddMapChunkPath("Epilogue/forest_house_inside");
		
		tempWorld.AddCharInfo("Player/Player_Girl", 48, 8);
		
		tempWorld.worldEventReceiverPath	= "DefaultWorldEventReceiver";
		tempWorld.worldBgm					= SoundInfos.GetBgm("epilogue");
		
		epilogue			= tempStage;





		
		// 스테이지 구성
		
		s_nextStage				= new Dictionary<StageInfo, StageInfo>();
		
		//s_nextStage[testStage]	= testStage2;
		//s_nextStage[testStage2]	= epilogue;

		s_nextStage[stage1]		= stage2;
		s_nextStage[stage2]		= stage3;
		s_nextStage[stage3]		= stage4;
		s_nextStage[stage4]		= stage5;
		s_nextStage[stage5]		= stage6;
		s_nextStage[stage6]		= epilogue;





		/*

		// testStage

		StageInfo tempStage	= new StageInfo();
		WorldInfo tempWorld	= new WorldInfo();
		tempStage.worldInfo	= tempWorld;

		tempStage.stageName	= "Test Stage";

		tempWorld.AddMapChunkPath("MapChunk_default4");
		tempWorld.AddMapChunkPath("MapChunk_default");
		tempWorld.AddMapChunkPath("MapChunk_default");
		tempWorld.AddMapChunkPath("MapChunk_default_clockhandcheck");
		tempWorld.AddMapChunkPath("MapChunk_default2");
		tempWorld.AddMapChunkPath("MapChunk_default_goal");

		tempWorld.AddCharInfo("Enemy/Enemy1-shooter", 70, 8);
		//tempWorld.AddCharInfo("Enemy/Enemy4", 80, 8);
		tempWorld.AddCharInfo("Enemy/Trap", 80, 8);
		tempWorld.AddCharInfo("Enemy/DummyEnemy", 120, 8);
		tempWorld.AddCharInfo("Enemy/DummyEnemy", 180, 8);
		tempWorld.AddCharInfo("Enemy/DummyEnemy", 200, 8);
		tempWorld.AddCharInfo("Enemy/DummyEnemy", 210, 8);


		tempWorld.AddCharInfo("FieldItem/CodexPoint", 160, 8);

		tempWorld.AddCharInfo("Enemy/DummyEnemy", 300, 8);

		tempWorld.AddCharInfo("Enemy/TheClockhand", 460, 8);

		tempWorld.AddCharInfo("Player/Player_Santa", 10, 8);

		tempWorld.worldEventReceiverPath	= "DefaultWorldEventReceiver";
		tempWorld.worldBgm					= SoundInfos.GetBgm("field");

		testStage			= tempStage;


		// testStage2
		
		tempStage			= new StageInfo();
		tempWorld			= new WorldInfo();
		tempStage.worldInfo	= tempWorld;
		
		tempStage.stageName	= "Test Stage 2";
		
		tempWorld.AddMapChunkPath("MapChunk_default");
		tempWorld.AddMapChunkPath("MapChunk_default");
		tempWorld.AddMapChunkPath("MapChunk_default");
		tempWorld.AddMapChunkPath("MapChunk_default");
		tempWorld.AddMapChunkPath("MapChunk_default3");
		tempWorld.AddMapChunkPath("MapChunk_default_goal_final");

		tempWorld.AddCharInfo("FieldItem/CodexPoint", 160, 8);

		tempWorld.AddCharInfo("Enemy/TheClockhand", 510, 8);
		tempWorld.AddCharInfo("Player/Player_Santa", 20, 8);
		
		tempWorld.worldEventReceiverPath	= "DefaultWorldEventReceiver";
		tempWorld.worldBgm					= SoundInfos.GetBgm("field");
		
		testStage2			= tempStage;



		*/

	}
}




